package chapter04;

public class Java11_Object_Instance {
    public static void main(String[] args) {
        // TODO 构造对象
        // 构造方法：专用于构建对象
        // 如果一个类中没有任何构造方法，则JVM会自动添加一个公共的，无参的构造方法，方便对象的调用
        // TODO 基本语法：类型() {}
        /*
            1.构造方法也是方法，但是没有void关键字
            2.方法和类名完全相同
            3.如果类中没有构造方法，JVM会提供默认的构造方法
            4.如果类中有构造方法，JVM不会提供默认的构造方法
            5.构造方法也是方法，所以也可以传递参数，但是一般传递参数的目的时用于对象属性的赋值
         */
        // 代码块，在构造对象之前执行
        System.out.println("before");
        User11 user = new User11("zhangsan");
        System.out.println("after");
        user.test();
        System.out.println("userName = " + user.userName);
    }
}
class User11{
    String userName;
    {
        System.out.println("代码块1");
    }
    User11(String name){
        userName = name;
        System.out.println("User");
    }
    void test(){
        System.out.println("test");
    }
    {
        System.out.println("代码块2");
    }
}
